/*
 * HuffmanArbol.h
 *
 *  Created on: 10/06/2014
 *      Author: manuel
 */

#ifndef HUFFMANARBOL_H_
#define HUFFMANARBOL_H_

#include "HuffNodo.h"
#include <map>

class HuffmanArbol {
public:
	typedef std::multimap<unsigned int, HuffNodo*> Tabla;

	HuffmanArbol();
	HuffmanArbol(HuffNodo *raiz);
	HuffmanArbol(Tabla tabla);
	virtual ~HuffmanArbol();

	void generarArbol();
	void generarArbolOptimizado();
	void setTabla(Tabla tabla);

	bool getCodificacionChar2(unsigned char caracter, std::string& cod);

	bool moverActualHastaHoja(std::string direccion);
	void moverActualARaiz();

	unsigned char getCaracterNodoActual();

	void imprimir();
	void destruir();
	void destruirOptimizado();

	HuffNodo* raiz;
	HuffNodo* actual;
	Tabla tabla; //donde estan guardados los nodos del arbol
};

#endif /* HUFFMANARBOL_H_ */
